<?php
/**
 * Description of Outils
 *
 * @author OALBERT
 */
class Tools {
   
  /**
   * Empêcher la mise en cache des pages avec PHP
   *
   * La fonction doit-être appellée avant toute balise HTML,
   * espace blanc, echo(), print()...
   *
   * @param : void
   * @return : void
   */
    public static function eviterCache()
    {
      header('Pragma: no-cache'); 
      header('Expires: 0');
      header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
      header('Cache-Control: no-cache, must-revalidate');
    }
  
      
    public static function HasherPasse($password)
    {
            //256 bits de Chaîne alétatoire
            $salt = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));
            //On Hashe le Mots de Passe concaténé avec le Salt
            $hash = hash("sha256", $password . $salt);

            //On retourne le salt concaténé avec le hash
            return $salt . $hash;
    }

    /**
    * Vérifier si le mots de passe(1er paramètre), hashé avec la fonction correspond à celui dans la base de donnée.
    * @param : string, string
    * @return : boolean
    */
    public static function VerifierPasse($password, $dbhash)
    {
            //On récupére le Salt du mots de passe (BDD)
            $salt = substr($dbhash, 0, 64);

            //On récupère le Hash du mots de passe (BDD)
            $valid_hash = substr($dbhash, 64, 64);

            //On Hash le mots de passe (saisie) concaténé avec le Salt
            $test_hash = hash("sha256", $password . $salt);

            //On compare la Chaîne du mdp saisit et celle du mdp de la bdd, qui sont tout les deux hashés
            return $test_hash === $valid_hash;
    }
    
    public static function dateBDDVersPHP($uneDate)
    {
        //Format AAAA-MM-JJ HH:MM:SS dans la BDD
        $tableau1 = explode(" ", $uneDate);
        $partieDate = $tableau1[0];
        $partieHeure = $tableau1[1];
        
        $tableau2 = explode("-", $partieDate);
        $annee = $tableau2[0];
        $mois = $tableau2[1];
        $jour = $tableau2[2];
        
        $tableau3 = explode(":", $partieHeure);
        $heure = $tableau3[0];
        $minute = $tableau3[1];
        $seconde = $tableau3[2];
        
        return mktime($heure, $minute, $seconde, $mois, $jour, $annee);
    }
    
    public static function datePHPVersBDD($laDate)
    {
        return date('Y-m-d H:i:s', $laDate);
    }
    
    public static function recupererLigneDansTableau($nomLigne, $valeurLigne, $unTableau)
    {
        foreach ($unTableau as $uneLigne)
        {
            if ($uneLigne->$nomLigne == $valeurLigne)
            {
                return $uneLigne;
            }
        }
    }
    
    public static function fusionnerDeuxTableau($tab1, $tab2)
    {
        foreach($tab2 as $ligne)
        {
            $tab1[] = $ligne;
        }
        return $tab1;
    }
}
